/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package td2;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;

/**
 *
 * @author boomar
 */
public class Moyennes {

    //========================================================================
    //                             Attributs
    //========================================================================
    private Set<Etudiant> etudiants;

    //========================================================================
    //                             Constructeurs
    //========================================================================
    public Moyennes(Set<Etudiant> etudiants) {
        this.etudiants = etudiants;
    }

    //========================================================================
    //                             Getters
    //========================================================================
    public Set<Etudiant> getEtudiants() {
        return etudiants;
    }

    //========================================================================
    //                             Setters
    //========================================================================
    public void setEtudiants(Set<Etudiant> etudiants) {
        this.etudiants = etudiants;
    }

    //========================================================================
    //                             Méthodes
    //========================================================================
    @Override
    public String toString() {
        return "Moyennes{" + "etudiants=" + etudiants + '}';
    }

    //========================================================================
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Moyennes other = (Moyennes) obj;
        if (this.etudiants != other.etudiants && (this.etudiants == null || !this.etudiants.equals(other.etudiants))) {
            return false;
        }
        return true;
    }

    //========================================================================
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 47 * hash + (this.etudiants != null ? this.etudiants.hashCode() : 0);
        return hash;
    }

    //========================================================================
    void saisieNotes() {
    }

    //========================================================================
    /**
     *
     * @param m
     * @return
     */
    double moyenneParMatiere(Matiere m) {

        Iterator<Etudiant> i = etudiants.iterator();
        double cpt = 0;

        while (i.hasNext()) {
            cpt += i.next().getNote(m);
        }

        return cpt / etudiants.size();
    }

    Hashtable<Matiere, Double> moyenneParMatiere() {
        Hashtable<Matiere, Double> moyenneMatiere = new Hashtable<Matiere, Double>();
        for (Matiere m : Matiere.values()) {
            moyenneMatiere.put(m, moyenneParMatiere(m));
        }
        return moyenneMatiere;
    }

    String moyenneParMatiereToString() {
        StringBuilder str = new StringBuilder();

        Map<Matiere, Double> moyenneMatiere = moyenneParMatiere();

        Set<Matiere> set = moyenneMatiere.keySet();
        Iterator<Matiere> itr = set.iterator();

        while (itr.hasNext()) {
          str.append(itr.next().toString());
        }

        return str.toString();
    }

    //========================================================================
    double moyenneGen() {

        Iterator<Etudiant> itr = etudiants.iterator();
        double cpt = 0;
        while (itr.hasNext()) {
          cpt += itr.next().getMoyenne();
        }

        return cpt / etudiants.size();
    }

    //========================================================================
    String classementParMatiere() {
        return "";
    }

    //========================================================================
    String classementGen() {
        SortedSet<Etudiant> ss=new TreeSet<Etudiant>(etudiants);
        Iterator<Etudiant> itr = ss.iterator();

        StringBuilder str = new StringBuilder();

        while(itr.hasNext()){
            str.append(itr.next().toString()).append("\n");
        }

        return str.toString();
    }
    //========================================================================
}
